CodeRabbitとGitHub連携時に必要な権限について調べてみた
はじめに
CodeRabbitはコードレビューのAI補助ツールです🐇
本記事では導入に必要なGitHubの権限について解説します。CodeRabbitを検証、導入する際に参考になればと思います。
前提
CodeRabbitののWebアプリのへのログイン(連携)方法は現状5つあります。今回はSaaSのGitHubについて調査します。
種類 | サービス |
---|---|
SaaS | GitHub |
SaaS | GitLab |
SaaS | Azure DevOps |
Self-Hosted | GitHub |
Self-Hosted | GitLab |
本記事は2024年の11月1日の調査内容となります。
結論
CodeRabbitとGitHub連携には、CodeRabbit社の以下2つのGitHubのアプリ両方の連携が必要です。
- OAuth apps
- GitHub Apps
またCodeRabbitのUI上からサブスクリプションを契約する際には、OrganizationのOwner権限が必要です。
GitHubのMarketplace経由での課金も可能ですが、Owner権限がないと一覧に表示されないため、契約はできません。
OAuth appsの連携
Loginボタンを押下すると連携できます。
委譲する権限は以下の通りで、アカウントの基本的な所属情報のみを取得する形で軽い権限と言えます。
user:email
: ユーザーのメール アドレスへの読み取りアクセスを許可read:org
: 組織のメンバーシップ、組織のプロジェクト、チームの参加状況の読み取りアクセスを許可
GitHub Appsの連携
こちらは実際にコードを解析するアプリと考えられます。コードにアクセスする必要があるため、権限は強めで、リポジトリのコードやコミットissueやPRに対して読み取りと書き込みの権限が付与されています。
- Read access to checks, discussions, and metadata
- Read and write access to code, commit statuses, issues, and pull requests
また本GitHub AppsはGitHub Marketplaceの「Publisher domain and email verified」バッジを取得しており、信頼性の基準になるかと思います。
その他
GitHubのOAuth appsとGitHub Appsの違いは以前執筆した記事をご参照ください。
調査
ログイン
まずログイン画面に行きます。複数のログイン手段が選択でき、今回はSaaSのGitHubを選択します。
認可画面に遷移します。
コールバックURLはhttps://github.com/login/oauth/authorize?client_id=45872a44c0e55c462eed&scope=user%3Aemail+read%3Aorg&skip_account_picker=true&state=github
です。
このURLからOAuth Appが要求するscopeは以下の通りです。GitHub公式 | OAuth アプリのスコープを参考に、以下の権限を委譲することが分かります。
スコープ | 権限の詳細 |
---|---|
user:email | ユーザーのメール アドレスへの読み取りアクセスを許可します。 |
read:org | 組織のメンバーシップ、組織のプロジェクト、チームのメンバーシップへの読み取り専用アクセス。 |
ログインすると、Owner/Organizationの選択画面になります。Ownerしか許可していないのでこの表示は想定通りです。
リポジトリの追加
リポジトリを追加します
Owner/Organizationが複数ある場合、選択します。
インストール対象のリポジトリを選択します。
権限はこの画像の通りです。
連携すると、サインアップ情報の入力が求められます。
最後に連携したリポジトリが見えていれば、連携完了です。
さいごに
GitHub Enterpriseでも基本的に同じ流れになると思います。参考 過去GitHub Enterpriseを運用されていたお客さんの中で、導入に関して権限の調査依頼を受けた経験があったため参考になるかと思い書きました。実際に使ったレビューは別の記事で書こうと思います。
余談: GitHub Copilot code reviewがローンチしたら、権限周りの話がないので嬉しいですね!